Premiers pas

AfromapR Bouaké 2025

Auteur·rice

Claude Grasland & Jean-Paul Nguesso

Date de publication

2025-05-27

Excel

OPERATIONS

Nous allons commencer par passer quelques commandes arithmétiques simples. Il suffit de les taper dans la console de R pour qu’elles s’executent automatiquement.

Opérations de base

8+2
[1] 10
8-2
[1] 6
8*2
[1] 16
8/2
[1] 4

Fonctions mathématiques

## Puissance
8**2
[1] 64
## Racine carrée
sqrt(8)
[1] 2.828427
8**(1/2)
[1] 2.828427
## Logarithme népérien
log(10)
[1] 2.302585
# Logarithme décimal
log10(10)
[1] 1

Fonctions géométriques

## Le nombre pi
pi
[1] 3.141593
## Sinus 
sin(pi)
[1] 1.224647e-16
## Cosinus
cos(pi)
[1] -1
## Tangente
tan(pi)
[1] -1.224647e-16

OBJETS

Les objets élémentaires de R apparaissent dans la fenêtre environnement sous la rubrique Values une fois qu’ils sont créés. Ils sont stockés dans la mémoire de votre ordinateur mais effacé si celui-ci est éteint

Eléments

Un élément est unique et constitue la brique de base de tous les objets suivants. On peut aussi l’interpréter comme un vecteur de longueur 1 ou une matrice de dimension 1x1.

x<-8
y<-2

x+y
[1] 10
x*y
[1] 16
x**y
[1] 64

Les éléments se combinent différemment selon leur type. Par exemple, des éléments de type caractère (character) peuvent être assemblés avec l’instruction paste() ou découpez avec l’instruction substr() :

x<-"Bonjour"
y<- "tout le monde"
z<- "!"
paste(x,y,z)
[1] "Bonjour tout le monde !"
substr(x,1,3)
[1] "Bon"

Quant aux éléments logiques (logical) nous verrons qu’ils peuvent se combiner avec des opérateurs comme & qui signifie ET ou bien | qui signifie OU.

x<-TRUE
y<-FALSE

x & y
[1] FALSE
x | y 
[1] TRUE

vecteurs (vectors)

Un vecteur est un ensemble d’éléments de même type que l’on a concaténés à l’aide de l’instruction c(). On peut ensuite les aditionner, les multiplier ou les combiner avec des éléments.

x <- c(1,2,4,8,16)
y <- 4
x+y
[1]  5  6  8 12 20
x*y
[1]  4  8 16 32 64
x**y
[1]     1    16   256  4096 65536

On remarque dans l’exemple ci-dessus que R n’a pas de problème pour combiner des vecteurs de tailles différentes.

Matrices (matrix)

Une matrice est un ensemble de vecteurs de même longueur et de même type. On peut donc construire une matrice en concaténant des vecteurs verticalement avec cbind()ou horizontalement avec rbind().

# deux vecteurs
x1 <- c(1,2,4,8,16)
x2 <- c(5,10,15,20,25)

# matrice en colonnes
m1 <- cbind(x1,x2)
m1
     x1 x2
[1,]  1  5
[2,]  2 10
[3,]  4 15
[4,]  8 20
[5,] 16 25
# matrice en lignes
m2 <- rbind(x1,x2)
m2
   [,1] [,2] [,3] [,4] [,5]
x1    1    2    4    8   16
x2    5   10   15   20   25
# piège !
m3 <- c(x1,x2)
m3
 [1]  1  2  4  8 16  5 10 15 20 25
is.matrix(m3)
[1] FALSE
Important

Si on assemble deux vecteurs à l’aide de la commande c()on obtient un vecteur et pas une matrice.

Listes (list)

R utilise des types plus complexes d’objets qui lui sont propres et qui sont en général des listes ou des listes de listes.

  • liste simple
  • liste de liste
  • listes de vecteur = data.frame
Important

Les vecteurs regroupent des éléments de même type tandis que les listes regroupent des éléments ou des objets de type quelconque. Le type liste est donc beaucoup plus général, mais aussi plus difficile d’emploi.

On peut comparer une liste à un panier de course dans lequel on mélange des choux, des carottes, des navets, une boîte de douze oeufs, un paquet de croquettes pour chiens, etc…

# Format vecteur
prenom <- c("Ali", "Amine",
    "Anne","Marc","Zayneb")
sexe <- c("H","H","F","H","F")
age  <- c(21,22,24,18,25)


# Format liste
Ali <- list("H",21)
Amine <- list("F",22)
Anne <- list("F",28)
Marc <- list ("H",18)
Zayneb <- list("F",25)

# Ne pas confondre !
Ali <- c("H",21)
Ali
[1] "H"  "21"
Ali <- list("H",21)
Ali
[[1]]
[1] "H"

[[2]]
[1] 21

TYPES

Chaque valeur, vecteur ou matrice appartient à un seul type de données. Il est important de ne pas les confondre, sous peine d’obtenir des résultats … douteux. On se limitera ici aux principaux types, d’autres étant vus ultérieurement dans l’année :

  • numeric : type général (entier, réels, …)
  • logique : type booleen (TRUE/FALSE)
  • date : année, mois, jour,n heure, minutes, secondes, …
  • character : texte quelconque
  • factor : variable catégorielle (codage d’enquêtes …)

La commande str() permet de vérifier le type d’un vecteur (ou d’une matrice) et d’en afficher la dimension.

# Format charactère
prenom <- c("Ali", "Amine","Anne",
            "Marc","Zayneb")
str(prenom)
 chr [1:5] "Ali" "Amine" "Anne" "Marc" "Zayneb"
# Format logique
likeR <- c(TRUE,FALSE, TRUE,
           FALSE, FALSE)
str(likeR)
 logi [1:5] TRUE FALSE TRUE FALSE FALSE
# Format Factor
sexe <- c(1,1,2,1,2)
sexe<-as.factor(sexe)
levels(sexe) <-c("Homme","Femme")
str(sexe)
 Factor w/ 2 levels "Homme","Femme": 1 1 2 1 2
# Format numerique
age  <- c(21,22,24,18,25)
str(age)
 num [1:5] 21 22 24 18 25
# Format date
nais<-c("1999-10-28","1998-10-13",
 "1996-10-15","2002-02-07","1995-06-18")
nais<-as.Date(nais)
str(nais)
 Date[1:5], format: "1999-10-28" "1998-10-13" "1996-10-15" "2002-02-07" "1995-06-18"

En résumé

Note

R est un langage de programmation multifonction qui évolue depuis maintenant plus de 30 ans et auquel s’ajoutent continuellement de nouveaux packages. A la différence de SPSS, il n’est pas spécialisé uniquement en statistique, même si le coeur du logiciel est bien centré sur la statistique. Pour progresser rapidement en R il est indispensable :

  • de prêter une grande attention aux types de variables et de tableaux.
  • de ne pas chercher à utiliser trop vite de nouveaux packages tant que l’on n’a pas acquis une pratique suffisante du R-Base.
  • de consulter la documentation et les forums de discussion en cas de difficulté.

Exercices

Exercice 1

Construire le vecteur x suivant :

[1] "Paris"    "Londres"  "Tokyo"    "New York"
x <- c("Paris", "Londres","Tokyo","New York")
x
[1] "Paris"    "Londres"  "Tokyo"    "New York"

Construire le vecteur y suivant :

[1] "France"      "Royaume-Uni" "Japon"       "USA"        
y <- c("France", "Royaume-Uni","Japon","USA")
y
[1] "France"      "Royaume-Uni" "Japon"       "USA"        

Construire le vecteur z suivant :

[1] 10.2 14.6 42.8 23.9
z <- c(10.2, 14.6,42.8,23.9)
z
[1] 10.2 14.6 42.8 23.9

Construire la matrice m1

  [,1]     [,2]          [,3]    [,4]      
x "Paris"  "Londres"     "Tokyo" "New York"
y "France" "Royaume-Uni" "Japon" "USA"     
m1<-rbind(x,y)
m1

Construire la matrice m2

     x          y            
[1,] "Paris"    "France"     
[2,] "Londres"  "Royaume-Uni"
[3,] "Tokyo"    "Japon"      
[4,] "New York" "USA"        
m2<-cbind(x,y)
m2

Construire le data.frame df

            y        x    z
1      France    Paris 10.2
2 Royaume-Uni  Londres 14.6
3       Japon    Tokyo 42.8
4         USA New York 23.9
df<-data.frame(y,x,z)

Exercice 2 (d’après J.Barnier)

On a demandé à 4 ménages le revenu des deux conjoints, et le nombre de personnes du ménage :

conjoint1 <- c(1200, 1180, 1750, 2100)
conjoint2 <- c(1450, 1870, 1690, 0)
nb_personnes <- c(4, 2, 3, 2)

Calculer le revenu total de chaque ménage, puis diviser par le nombre de personnes pour obtenir le revenu par personne de chaque ménage.

revenu_total <- conjoint1 + conjoint2
revenu_total / nb_personnes
[1]  662.500 1525.000 1146.667 1050.000